The present invention relates to communications between host applications and terminals. More particularly, the present invention relates to multiple concurrent communication sessions over a low-speed or wireless communication link between a client application at a first computer and a server application at a second computer.
Traditional mainframe computer configurations provided for user interface to the computer through computer terminals which were directly connected by wires to ports of the mainframe computer. An example of such a terminal is an IBM 3270 or IBM 5250 type terminal which may communicate with a mainframe (or host) using a Telnet protocol. A Telnet protocol for a terminal such as an IBM 3270 or an IBM 5250 typically provides for structured grouping of data stream transmissions with a series of control characters followed by a block of displayable characters with a data stream comprising a plurality of sequentially transmitted control character blocks followed by displayable character blocks.
As computing technology has evolved, processing power has typically moved from a more central computer model to a distributed environment with local area networks connecting individual work stations to wide area or internet networks linking a number of different local networks through devices such as, for example, routers. Furthermore, due to infrastructure limitations and cost, components of the xe2x80x9cnetworkxe2x80x9d linking two devices wishing to communicate may include a low through-put component such as a wireless network link. Central mainframe computers continue to play a role in the networked environment. Accordingly, using structured protocols such as the Telnet protocol are still in use. These applications may communicate with users over the network to terminals such as an IBM 3270 or, alternatively, to microprocessor based work stations executing software applications which allow the computers to act as a terminal.
Communications from a terminal (or terminal emulator) to a host are typically disadvantaged particularly on lower through-put network legs, such as wireless legs (or highly congested legs which are effectively bandwidth limited), where bandwidth limitations result in slower response time for communications between the terminal emulators and the host application. In the extreme, protocol timeouts may even cause transmission errors and resulting retransmissions or even inability of the communication system to operate. Thus, utilizing wireless technology, or any low-speed communication technology, with terminal emulator or other structured type data protocols exacerbates the weaknesses of the wireless technology.
A further problem with terminal to host communications relates to session start up. Sessions may be intentionally discontinued and restarted later. Problems may also be encountered where random session failures occur; causing unplanned loss of connection to the host. Additional problems may be encountered with identification of sessions for start up where multiple sessions are active concurrently for a single client/server (terminal/host) pair.
In view of the above limitations, it is one object of the present invention to take advantage of the installed user base of terminal emulator applications and terminals in a low-speed communication environment such as wireless communications.
It is a further object of the present invention to use existing terminal emulator protocols in a low-speed or wireless communication system without requiring modification of the terminal emulator applications.
It is an additional object of the present invention to provide a method of communicating across an external communication link which can reduce the volume of data for transmittal and can thereby increase the performance of the communication system.
It is a further object of the present invention to provide a method of persistent cache synchronization for communications over an external communication link which allows for a reduced volume of data for transmittal and can thereby increase the performance of the communication system after breaks in communication sessions.
It is an additional object of the present invention to provide protocol cache start up synchronization for communications between a client and a server having multiple concurrent communication sessions to reduce the volume of data for transmittal on the network on start-up to thereby increase the performance of the communication system.
In view of these and other objects, the present invention provides methods, systems and computer program products for persistent synchronization for a first communication session and a concurrent second communication session over an external communication link between an application executing on a first computer and an application executing on a second computer located remote from the first computer. In accordance with the present invention, a checkpoint cache is provided for multiple concurrent sessions between a single client/server pair which overcomes the problem of a lack of a unique identifier which can be associated with the checkpoint cache and carried forward in a manner allowing restart of a session regardless of which of the concurrent sessions is being restarted. In particular, according to the present invention, each concurrent session between single client/server pair maintains a separate active protocol cache but all sessions share a common checkpoint cache which is thereby associated with all the sessions rather than any specific individual session. Checkpointing between sessions is courteous, i.e., while any one session is executing a checkpoint, other sessions do not attempt to create a checkpoint to avoid corrupting the shared checkpoint cache. As restarts occur over time, information from prior sessions is merged with information from new sessions. Alternatively, as checkpoints continue to be taken from the various sessions active protocol caches, over time, the checkpoint cache gradually obtains information reflecting traffic for all of the concurrently active sessions thereby providing a beneficial xe2x80x9chotxe2x80x9d start up for a new session regardless of which of the concurrent sessions between the client/server pair is restarted.
In one embodiment of the present invention, a method of persistent cache synchronization for multiple concurrent sessions includes establishing a first cache operatively associated with the first session at the first computer and a corresponding second cache operatively associated with the first session at the second computer. A third cache operatively associated with the second session is established at the first computer and a corresponding fourth cache operatively associated with the second session is established at the second computer. A checkpoint request is transmitted to the second computer from the first computer indicating one of the first or the third cache to be used to provide a checkpoint. The checkpoint request is received at the second computer and the second computer copies the second cache responsive to the received checkpoint request if the checkpoint request indicates to the first cache it is to provide a checkpoint cache for the second computer. The fourth cache is copied responsive to the received checkpoint request if the request indicates that the third cache is to provide a checkpoint cache for the second computer. The provided checkpoint cache of the second computer is associated with both the first and the second session.
Responsive to copying a cache to the checkpoint cache of the second computer, a checkpoint confirmation message is transmitted to the first computer. The checkpoint confirmation message is received at the first computer and the first computer creates a checkpoint cache of the first computer as a copy of the indicated one of the first or the third cache responsive to the received checkpoint confirmation message. The checkpoint cache of the first computer is associated with both the first session and the second session to provide a checkpoint. The steps following the establishing steps are repeated when it is determined that a new checkpoint is desired.
In accordance with one embodiment of the present invention, operations for determining when a new checkpoint is desired include initiating a new checkpoint from the first cache based on a checkpoint criteria for the first session and preventing initiating a new checkpoint from the first cache during creation of a checkpoint from the third cache. A new checkpoint is initiated from the third cache based on a checkpoint criteria for the second session and initiating of a new checkpoint from the third cache is prevented during execution of a new checkpoint from the first cache. In another embodiment of the present invention, the checkpoint criteria for the first session is the same as the checkpoint criteria for the second session. In a further embodiment of the present invention, the checkpoint criteria for the first session is a function of the time since the checkpoint was last taken from the first cache and the checkpoint criteria for the second session is a function of the time since the checkpoint was last taken from the third cache. In an additional embodiment of the present invention, the checkpoint criteria for the first session is a function of communications activity associated with the first session and the checkpoint criteria for the second session is a function of communications activity associated with the second session. In a preferred embodiment of the present invention, the checkpoint criteria for the first session and the checkpoint criteria for the second session are selected to result in a checkpoint cache after a plurality of checkpoints have been executed which are taken from both the first cache and the third cache.
In a further embodiment of the present invention, operations related to transmitting a checkpoint confirmation message include determining if a checkpoint cache at the second computer was provided without error and transmitting a checkpoint confirmation message indicating a success if no error is indicated. In a further embodiment, one of the first or third cache at the first computer is copied to a temporary cache of the first computer before transmitting a checkpoint request. Transmitting a checkpoint confirmation message operations further include transmitting a checkpoint confirmation message indicating a failure if an error is indicated in operations providing the checkpoint cache of the second computer. In this embodiment, when the checkpoint confirmation message is received at the first computer, the first computer determines if the received checkpoint confirmation message indicates a success. If a success is indicated, the first computer converts the temporary cache into a checkpoint cache of the first computer. The temporary cache is discarded if the received checkpoint confirmation message indicates a failure.
In a particular embodiment of the present invention, the application executing on the first computer is a client protocol conversion application such as a terminal emulator protocol differencing interceptor, and the application executing on the second computer is a server protocol conversion application such as a terminal emulator protocol differencing interceptor. In this embodiment, the client application preferably determines if a new checkpoint is desired.
In another embodiment of the present invention, operations further include initiating a third communication session by transmitting a request from the client application to the server application over the external communication link. An identification of the checkpoint cache of the second computer is transmitted to the client application responsive to the request. The client application selects a checkpoint cache of the first computer associated with the transmitted identification as a protocol cache operatively associated with the third session at the first computer. An acknowledgment message is then transmitted to the server application acknowledging selection of the identified checkpoint cache as the protocol cache for use with the third session at the first computer. The identified checkpoint cache of the second computer is selected as a corresponding checkpoint cache operatively associated with the third session at the second computer responsive to the acknowledgment message. This provides for utilization of the checkpoint cache created from either or both the first and second sessions for start up of a third session which may be a restart of either the first or the second session. In another embodiment of the present invention, a plurality of checkpoint caches are associated with the second computer and the identifications of each of the checkpoint caches is provided and one, preferably the most recent one, is selected for use in start up.
In another aspect of the present invention, methods, systems, and computer program products are provided for persistent cache synchronization for an application executing on a second computer and having a first communication session and a concurrent second communication session with an application executing on a first computer. The second computer is located remote from the first computer and communicates with the first computer over an external communication link. A protocol cache is established at the second computer for each of the first and the second session. A checkpoint request is received at the second computer identifying one of the first or the second session for a checkpoint. The protocol cache operatively associated with the identified one of the first or the second sessions at the second computer is copied responsive to the received checkpoint request to provide a checkpoint cache of the second computer. A checkpoint cache of the second computer is associated with both the first and second session. A checkpoint confirmation message is transmitted to the first computer confirming copying of the protocol cache. Operations as described subsequent to the establishing step are repeated for additional checkpoints.
In a further aspect of the present invention, methods, systems and computer program products are provided for an application executing on a first computer and having a first communication session and a concurrent second communication sessions with an application executing on a second computer. The first computer is located remote from the second computer and communicates with the second computer over an external communication link. A protocol cache is established operatively associated with the first session at the first computer and a protocol cache is established operatively associated with the second session at the first computer. A checkpoint request is transmitted to the second computer indicating one of the first or the second session whose associated protocol cache is to be used to create a checkpoint. A confirmation message from the second computer is received at the first computer. Responsive to the received confirmation message, a checkpoint cache of the first computer is created as a copy of the protocol cache of the one of the first or the second session at the first computer. The checkpoint cache of the first computer is associated with both the first session and the second session. Operations following the establishing operations may be repeated to provide a new checkpoint.
As will be appreciated by those of skill in this art, the above described aspects of the present invention may also be provided as an apparatus or program product having computer-readable program means. The present invention overcomes the problem of start up synchronization where multiple sessions are allowed between a single client/server pair. This can provide improved performance, particularly, by allowing xe2x80x9chotxe2x80x9d start rather than xe2x80x9ccoldxe2x80x9d start for a subsequent new session while still insuring synchronization between the cache utilized at the client and the server side of the communication. Cache checkpointing may also be simplified by copying the entire cache for each checkpoint.